path bar: Don't segfault if we get disposed quickly
authorMatthias Clasen <mclasen@redhat.com>
Mon, 19 Jan 2015 16:57:10 +0000 (11:57 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 19 Jan 2015 16:57:10 +0000 (11:57 -0500)
The file chooser code now calls into the path bar in init,
starting an async operation. This unveiled that the path bar
code was not safe against being disposed early, by causing
a crahsh of the objects-finalize test.
Fix this by making the callback check for CANCELLED.

gtk/gtkpathbar.c

index 0afef8c8a3e4d8745f1015596c6223a0fcceea38..06e11c80672205760f35da0d4b477e53e8ced4be 100644 (file)
@@ -1791,6 +1791,9 @@ gtk_path_bar_get_info_callback (GCancellable *cancellable,
   const gchar *display_name;
   gboolean is_hidden;
 
+  if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+    return;
+
   if (cancellable != file_info->path_bar->priv->get_info_cancellable)
     {
       gtk_path_bar_set_file_finish (file_info, FALSE);
@@ -1876,6 +1879,7 @@ _gtk_path_bar_set_file (GtkPathBar      *path_bar,
                                "standard::display-name,standard::is-hidden,standard::is-backup",
                                gtk_path_bar_get_info_callback,
                                info);
+
 }
 
 /* FIXME: This should be a construct-only property */